export interface UserInfo {
  userName: string;
  token: string;
  permissions: string;
}

export interface UserInfoResponse extends UserInfo {
  status: number;
}

export interface Menu {
  name: string;
  path?: string;
  children?: Menu[];
}

export interface RouterHistory {
  id: number;
  content: string;
  path: string;
  closable?: boolean;
}

export interface StudentScore {
  name: string;
  status: number;
  professional: string;
  className: string;
  radioScore: number;
  selectScore: number;
  judgeScore: number;
  score: number;
  studentId: number;
}

export interface VariousResultData {
  count: number;
  title: string;
  icon: string;
}

export interface AdminUser {
  name: string;
  password: string;
  loginTime: string;
  addTime: string;
  roleId: number;
  status: number;
}

export interface ClassInfo {
  key: number;
  class_name: string;
  class_teacher: string;
  add_time?: number;
  status: number | string;
  major_name: string;
}

export interface Majors {
  add_time?: number;
  key?: number;
  major_name: string;
  status: number;
}

export interface SubJect {
  add_time?: number;
  key?: number;
  major_name: string;
  status: number;
  subject_name: string;
}

export interface RadioData {
  A?: string;
  B?: string;
  C?: string;
  D?: string;
  key?: number;
  add_time?: number;
  major_name?: string;
  right_key: string;
  single_name: string;
  status?: number;
  subject_name: string;
}

export interface AddRadioData {
  single_name: string;
  A: string;
  B: string;
  C: string;
  D: string;
  right_key: string;
  subject_name: string;
}

export interface SelectData {
  lastKey?: string;
  a: string;
  b: string;
  c: string;
  d: string;
  add_time: string;
  key: string;
  major_name: string;
  right_key: string;
  selection_name: string;
  status?: number;
  subject_name: string;
  show_key?: string;
}
export interface AddSelectData {
  selection_name: string;
  A: string;
  B: string;
  C: string;
  D: string;
  right_key: string[] | string;
  subject_name: string;
  lastKey?: string;
}

export interface JudgeData {
  add_time?: number;
  judge_name: string;
  key: number;
  major_name?: string;
  right_key: string;
  status?: number;
  subject_name: string;
  show_key?: string;
}

export interface AddTest {
  test_name: string;
  exam_deadline: string;
  exam_introduction: string;
  time_limit: string;
  subject_name: string;
  status: number;
  singles: number[] | string;
  selections: number[] | string;
  judges: number[] | string;
  time?: string;
}
export interface ModifyTest extends AddTest {
  key?: number;
  id?: number;
}

export interface TestInfo extends AddTest {
  key: number;
  add_time: number;
}
